package first

import (
	"math"
	"strconv"
)

/*
	输入一个整数 n ，求1～n这n个整数的十进制表示中1出现的次数。

	例如，输入12，1～12这些整数中包含1 的数字有1、10、11和12，1一共出现了5次。

	示例 1：
	输入：n = 12
	输出：5

	示例 2：
	输入：n = 13
	输出：6

	限制：

	1 <= n <2^31
	注意：本题与主站 233 题相同：https://leetcode-cn.com/problems/number-of-digit-one/

	来源：力扣（LeetCode）
	链接：https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof
	著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
func countDigitOne(n int) int {
	counts := 0
	s := strconv.Itoa(n)
	dp1 := make([]int, len(s))
	dp2 := make([]int, len(s))
	dp1[0] = 1
	for i := 1; i < len(dp1); i++ {
		dp1[i] = 10 * dp1[i-1] * int(math.Pow10(i))
	}
	if s[len(s)-1] == '0' {
		dp2[0] = 1
	} else {
		dp2[0] = 0
	}
	for i := 1; i < len(dp2); i++ {
		if s[i] == '0' {
			dp2[i] = dp2[i-1]
		} else if s[i] == '1' {
			//dp2[i] =
		} else {

		}
	}
	return counts
}
